package co.edu.udea.sigepi.data.dao.exception;

import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;

import co.edu.udea.sigepi.common.AppConstants;

public class DAOException extends RuntimeException {

	// Constantes
	// ----------------------------------------------------------------------------------

	private static final long serialVersionUID = 1L;

	static Logger logger = null;

	static {
			/**
			 * Clase de logging.
			 */
			logger = Logger.getLogger(DAOException.class);
			// Setea una simple configuracion para la libreria log4j.
			PropertyConfigurator.configure(AppConstants.LOCATION_PROPERTIES);
	}

	// Constructores
	// -------------------------------------------------------------------------------

	/**
	 * 
	 */
	public DAOException() {
		super();
	}

	/**
	 * Construye una excepcion con el mensaje dado.
	 * 
	 * @param message
	 *            El detalle del mensaje de la DAOException.
	 */
	public DAOException(String message) {
		super(message);
		logger.debug(message);

	}

	/**
	 * Construye una excepcion con una causa o excepcion.
	 * 
	 * @param cause
	 *            La causa o excepcion raiz del DAOException.
	 */
	public DAOException(Throwable cause) {
		super(cause);
		logger.debug(cause);
	}

	/**
	 * Construye una DAOException con una causa y mensaje.
	 * 
	 * @param message
	 *            El detalle del mensaje de la DAOException.
	 * @param cause
	 *            La causa o excepcion raiz del DAOException.
	 */
	public DAOException(String message, Throwable cause) {
		super(message, cause);
		logger.debug(message, cause);
	}

}
